Service providers typically provide numerous voice and data services to end users (also referred to as subscribers). Examples of voice services are voice calls, call forwarding, call waiting, etc. Examples of data services are streaming audio, streaming video, Voice over Internet Protocol (VoIP), online gaming, and IP-TV. The data services are managed by a packet core network, which interfaces the end user with external Packet Data Networks (PDN), such as the Internet.
The service providers use offline and online charging to keep track of the charges incurred by each device for accessing the various services. The 3GPP/3GPP2 standards groups have defined a set of specifications that may be used to implement online and offline charging in the various network domains (e.g., a circuit switching network domain, a packet switching network domain, and/or a wireless domain), IP Multimedia Subsystems (IMS), 3G/OMA application services, etc.
Offline charging is generally defined as a charging mechanism where charging information does not affect, in real-time, the service rendered. In offline charging, charging information for network resource usage is collected concurrently with resource usage. The network elements of an IMS network, for example, include Charging Trigger Functions (CTF). Some examples of the network elements that include CTFs are Call Session Control Functions (Proxy, Serving, and Interrogating) and application servers (AS). For offline charging, the CTF triggers on charging events, collects charging information pertaining to the charging events, and assembles the charging information into matching charging events. The CTF then reports the charging events to an Offline Charging System (OFCS) by sending accounting requests to the OFCS. One example of an accounting request is a Diameter Accounting Request (ACR).
The OFCS includes one or more Charging Collection Functions (CCF) that build Charging Data Records (CDR) using charging information for a session provided by the CTFs in the accounting requests. When the session ends, the CCF provides the CDR (or a single consolidated CDR) to a billing domain so that charges can be reconciled for the session.
To illustrate offline charging, when a network element first becomes involved in a session, the CTF in the network element generates an ACR[Start] and transmits the ACR[Start] to a primary CCF. After the session is established, the CTF periodically transmits one or more ACR[Interim] messages to the CCF. If the CTF detects that the session ends, then the CTF generates an ACR[Stop] and transmits the ACR[Stop] to the CCF.
When the primary CCF first receives the ACR[Start] from the CTF, the CCF opens a CDR for the session for that network element. The CCF then updates the open CDR each time it receives an ACR[Interim] from the CTF based on the charging information in the ACR[Interim]. If the primary CCF receives an ACR[Stop] from the CTF, then the CCF closes the CDR for the session for that network element.
There may be instances where the primary CCF generates a partial CDR for the session. The CCF has one or more triggers for closing a CDR. One of the triggers is a timer. For example, when CCF first receives an ACR[Start] from the CTF, the CCF sets a timer. If the CCF receives an ACR[Stop] from the CTF before expiration of the timer, then the CCF closes the CDR for the session to generate a full CDR. If the CCF does not receive an ACR[Stop] from the CTF before expiration of the timer, then the CCF closes the CDR to generate a partial CDR for the session. The CCF then opens a new CDR for the session. The CCF will continue to generate partial CDRs when the timer expires until an ACR[Stop] is received from the CTF.
If the primary CCF happens to encounter a failure while handling charging for a session, then the CTF within the network element will send the accounting requests to a secondary or backup CCF. This is referred to as a failover from a primary CCF to a secondary CCF. The secondary CCF will generate one or more CDRs for the session based on the charging information provided in the accounting requests. However, when there is a failover from one CCF to another, the information in the CDRs may be incomplete. Thus, the service provider may not be able to bill for part or all of a session.